package es.valma.VideoClub.base;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;

import es.valma.VideoClub.DAO.base.ConnectorBBDD;
import es.valma.VideoClub.exception.base.VideoClubSvSecuenceException;

/*
 * Esta clase nos vale para llevar los ID de todas las clases de nuestro sistema
 * clientes,series,capitulos...
 */
public class VideoClubSvSecuence {
  
	
  private static PreparedStatement pStmentActual;
  private static PreparedStatement pStmentUpdate;

  private static void conexionBd() {
    try {
      Connection conector = ConnectorBBDD.getConector();
      pStmentActual = conector
          .prepareStatement("SELECT idSecuencer,nombre,valor FROM secuencer WHERE idSecuencer=?");
      pStmentUpdate = conector
          .prepareStatement("UPDATE secuencer SET valor=valor+1 WHERE idSecuencer=?");
    } catch (SQLException e) {
      throw (new VideoClubSvSecuenceException("VideoClubSvSecuence. Error Constructora con el conector,sql", e));
    } catch (ClassNotFoundException driver) {
      throw (new VideoClubSvSecuenceException("VideoClubSvSecuence. Error Constructora con el conector,driver",
          driver));
    }
  }

  public static int hasNext(int tipo) {
    int id = 0;
    ResultSet resultados = null;
    try {
      conexionBd();
      switch (tipo) {
        case 1://Clientes
          pStmentUpdate.setInt(1, 0);
          pStmentActual.setInt(1, 0);
          pStmentUpdate.executeUpdate();
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 2://peliculas
          pStmentUpdate.setInt(1, 1);
          pStmentActual.setInt(1, 1);
          pStmentUpdate.executeUpdate();
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 3://capitulos
          pStmentUpdate.setInt(1, 2);
          pStmentActual.setInt(1, 2);
          pStmentUpdate.executeUpdate();
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 4://consumoCapitulos
          pStmentUpdate.setInt(1, 3);
          pStmentActual.setInt(1, 3);
          pStmentUpdate.executeUpdate();
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 5://consumoPeliculas
          pStmentUpdate.setInt(1, 4);
          pStmentActual.setInt(1, 4);
          pStmentUpdate.executeUpdate();
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 6://series
          pStmentUpdate.setInt(1, 5);
          pStmentActual.setInt(1, 5);
          pStmentUpdate.executeUpdate();
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        default:
          id = 0;
          break;
      }
    } catch (SQLException sql) {

    }
    return id;
  }

  public static int getCurrent(int tipo) {
    int id = 0;
    ResultSet resultados = null;
    try {
      conexionBd();
      switch (tipo) {
        case 1:
          pStmentActual.setInt(1, 0);
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 2:
          pStmentActual.setInt(1, 1);
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 3:
          pStmentActual.setInt(1, 2);
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 4:
          pStmentActual.setInt(1, 3);
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 5:
          pStmentActual.setInt(1, 4);
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        case 6:
          pStmentActual.setInt(1, 5);
          resultados = pStmentActual.executeQuery();
          resultados.beforeFirst();
          resultados.next();
          id = resultados.getInt("valor");
          break;
        default:
          id = 0;
          break;
      }
    } catch (SQLException sql) {

    }
    return id;
  }

}
